<?php 
	namespace service;

	use think\Db;
	use think\Request;

	class DataService {
		/**
	     * 数据增量保存
	     * @param \think\db\Query|string $dbQuery 数据查询对象
	     * @param array $data 需要保存或更新的数据
	     * @param string $key 条件主键限制
	     * @param array $where 其它的where条件
	     * @return bool
	     */
	    public static function save($dbQuery, $data, $key = 'id', $where = [])
	    {
	        $db = is_string($dbQuery) ? Db::name($dbQuery) : $dbQuery;
	        $where[$key] = isset($data[$key]) ? $data[$key] : '';
	        if ($db->where($where)->count() > 0) {
	            return $db->where($where)->update($data) !== false;
	        }
	        return $db->insert($data) !== false;
	    }

	    /**
	     * 更新数据表内容
	     * @param \think\db\Query|string $dbQuery 数据查询对象
	     * @param array $where 额外查询条件
	     * @return bool|null
	     */
	    public static function update(&$dbQuery, $where = [])
	    {
	        $request = Request::instance();
	        $db = is_string($dbQuery) ? Db::name($dbQuery) : $dbQuery;
	        $ids = explode(',', $request->post('id', ''));
	        $field = $request->post('field', '');
	        $value = $request->post('value', '');
	        $pk = $db->getPk(['table' => $db->getTable()]);
	        $where[empty($pk) ? 'id' : $pk] = ['in', $ids];
	        // 删除模式，如果存在 is_deleted 字段使用软删除
	        if ($field === 'delete') {
	            if (method_exists($db, 'getTableFields')) {
	                if (in_array('is_deleted', $db->getTableFields($db->getTable()))) {
	                    return false !== $db->where($where)->update(['is_deleted' => 1]);
	                }
	            }
	            return false !== $db->where($where)->delete();
	        }
	        // 更新模式，更新指定字段内容
	        return false !== $db->where($where)->update([$field => $value]);
	    }
	}


 ?>